﻿Public Class frmDanhMuc

    Public Event OnUpdate As EventHandler(Of EventArgs)
    Protected Sub SetUpdate(obj As DanhMuc)
        RaiseEvent OnUpdate(obj, New EventArgs())
    End Sub
    Dim db As QlqaContext = New QlqaContext()
    Private Sub lvDs_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles lvDs.SelectedIndexChanged
        If (lvDs.SelectedItems.Count) Then
            txtTen.Text = lvDs.SelectedItems(0).SubItems(1).Text
        End If
    End Sub

    Private Sub lvDs_MouseDoubleClick(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles lvDs.MouseDoubleClick
        txtTen.Text = lvDs.SelectedItems(0).SubItems(1).Text
    End Sub

    Private Sub CapNhatSoThuTu()
        For i As Integer = 1 To lvDs.Items.Count
            lvDs.Items(i - 1).Text = i.ToString()
        Next
    End Sub

    Private Sub btnThem_Click(sender As System.Object, e As System.EventArgs) Handles btnThem.Click

        Dim obj As DanhMuc = New DanhMuc()

        obj.Ten = txtTen.Text
        db.DanhMucs.Add(obj)

        db.SaveChanges()
        LoadDs()
        SetUpdate(obj)
    End Sub

    Private Sub frmDanhMuc_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        LoadDs()
    End Sub

    Sub LoadDs()
        lvDs.Items.Clear()

        For Each o As DanhMuc In db.DanhMucs
            Dim li = New ListViewItem()
            li.Tag = o
            li.SubItems.Add(o.Ten)
            lvDs.Items.Add(li)
        Next
        CapNhatSoThuTu()
    End Sub

    Private Sub btnXoa_Click(sender As System.Object, e As System.EventArgs) Handles btnXoa.Click
        If lvDs.SelectedItems.Count = 0 Then Return



        Dim obj As DanhMuc = lvDs.SelectedItems(0).Tag

        If Not IsNothing(obj) Then
            db.DanhMucs.Remove(obj)
            db.SaveChanges()
            ' và xóa dòng được trên thể hiện ListView
            lvDs.SelectedItems(0).Remove()
            ' Cập nhật lại số thứ tự
            CapNhatSoThuTu()
        End If

        SetUpdate(obj)
    End Sub

    Private Sub btnCapNhat_Click(sender As System.Object, e As System.EventArgs) Handles btnCapNhat.Click
        ' Lấy số thứ tự của dòng đang được chọn
        Dim selectedIndex As Integer = CType(lvDs.SelectedItems(0).Text, Integer) - 1
        Dim ten As String = txtTen.Text

        Dim obj As DanhMuc = lvDs.SelectedItems(0).Tag

        If Not IsNothing(obj) Then

            obj.Ten = ten

            db.SaveChanges()

            ' Cập nhật lại trên thể hiện ListView
            lvDs.Items(selectedIndex).SubItems(1).Text = ten

            ' Cập nhật lại số thứ tự
            CapNhatSoThuTu()
        End If
        SetUpdate(obj)


    End Sub

    Private Sub btnSoanLai_Click(sender As System.Object, e As System.EventArgs) Handles btnSoanLai.Click
        txtTen.Text = String.Empty
    End Sub
End Class